home *** CD-ROM | disk | FTP | other *** search
/ Aminet 34 / Aminet 34 (2000)(Schatztruhe)[!][Dec 1999].iso / Aminet / dev / basic / SocketFuncs.lha / v1.0 / SocketIncs.bb2 next >
Encoding:
Text File  |  1999-10-10  |  12.0 KB  |  799 lines

  1. ;----------------------------------------------------------------------------
  2. ; ASM Function calls for bsdsocket.library functions v1.0 by Roger Light 1999.
  3. ;
  4. ; Only functions used in Paul Burkey's TCPFuncs.bb2 have been tested (and those
  5. ; not much...)
  6. ; Use at your own risk!
  7. ;
  8. ; Allows non-restrictive use of bsdsocket.library - ie bsdsocket.library
  9. ; doesn't have to be open on your program startup.
  10. ;
  11. ; See MiamiSDK from Nordic Global for function descriptions.
  12. ;
  13. ; Functions are named as follows:
  14. ;
  15. ; socket_() changes to socket{}
  16. ;
  17. ; I recommend that you extract only the functions that you need, to save on
  18. ; executable size. If you do use any of these functions, please mention me
  19. ; in your docs ;)
  20. ;
  21. ; Contact me at rogerlight@mindless.com
  22.  
  23.  
  24. ;----------------------------------------------------------------------------
  25.  
  26. Function.l socket{domain.l, type_.l, protocol.l}
  27. ;                   d0        d1        d2
  28.   SHARED SocketBase.l
  29.   MOVE.l a6,-(a7)
  30.   GetReg d6,SocketBase
  31.   MOVE.l d6,a6
  32.   JSR -30(a6)
  33.  
  34.   MOVE.l (a7)+,a6
  35.   AsmExit
  36. End Function
  37.  
  38. ;----
  39.  
  40. Function.l bind{s.l, *name.l, namelen.l}
  41. ;                d0     a0      d1
  42.   SHARED SocketBase.l
  43.   MOVE.l a6,-(a7)
  44.   GetReg d6,SocketBase
  45.   MOVE.l d6,a6
  46.                       ; s.l in d0
  47.   MOVE.l d1,a0        ; *name.l in a0
  48.   MOVE.l d2,d1        ; namelen.l in d1
  49.  
  50.   JSR -36(a6)
  51.  
  52.   MOVE.l (a7)+,a6
  53.   AsmExit
  54. End Function
  55.  
  56. ;----
  57.  
  58. Function.l listen{s.l, backlog.l}
  59. ;                  d0     d1
  60.   SHARED SocketBase.l
  61.   MOVE.l a6,-(a7)
  62.   GetReg d6,SocketBase
  63.   MOVE.l d6,a6
  64.  
  65.   JSR -42(a6)
  66.  
  67.   MOVE.l (a7)+,a6
  68.   AsmExit
  69. End Function
  70.  
  71. ;----
  72.  
  73. Function.l accept{s.l,  *addr_.l, *addrlen.l}
  74. ;                  d0     a0          a1
  75.   SHARED SocketBase.l
  76.   MOVE.l a6,-(a7)
  77.   GetReg d6,SocketBase
  78.   MOVE.l d6,a6
  79.                       ; s.l in d0
  80.   MOVE.l d1,a0        ; *addr_.l in a0
  81.   MOVE.l d2,a1        ; *addrlen.l in a1
  82.  
  83.   JSR -48(a6)
  84.  
  85.   MOVE.l (a7)+,a6
  86.   AsmExit
  87. End Function
  88.  
  89. ;----
  90.  
  91. Function.l connect{s.l, *name.l, namelen.l}
  92. ;                   d0    a0        d1
  93.   SHARED SocketBase.l
  94.   MOVE.l a6,-(a7)
  95.   GetReg d6,SocketBase
  96.   MOVE.l d6,a6
  97.  
  98.   MOVE.l d1,a0
  99.   MOVE.l d2,d1
  100.  
  101.   JSR -54(a6)
  102.  
  103.   MOVE.l (a7)+,a6
  104.   AsmExit
  105. End Function
  106.  
  107. ;----
  108.  
  109. Function.l sendto{s.l, *buf.l, len_.l, flags.l, *to_.l, tolen.l}
  110. ;                 d0     a0      d1      d2       a1      d3
  111.   SHARED SocketBase.l
  112.   MOVE.l a6,-(a7)
  113.   GetReg d6,SocketBase
  114.   MOVE.l d6,a6
  115.  
  116.   MOVE.l d1,a0
  117.   MOVE.l d2,d1
  118.   MOVE.l d3,d2
  119.   MOVE.l d4,a1
  120.   MOVE.l d5,d3
  121.  
  122.   JSR -60(a6)
  123.  
  124.   MOVE.l (a7)+,a6
  125.   AsmExit
  126. End Function
  127.  
  128. ;----
  129.  
  130. Function.l send{s.l, *buf.l, len_.l, flags.l}
  131. ;                d0    a0      d1      d2
  132.   SHARED SocketBase.l
  133.   MOVE.l a6,-(a7)
  134.   GetReg d6,SocketBase
  135.   MOVE.l d6,a6
  136.  
  137.   MOVE.l d1,a0
  138.   MOVE.l d2,d1
  139.   MOVE.l d3,d2
  140.  
  141.   JSR -66(a6)
  142.  
  143.   MOVE.l (a7)+,a6
  144.   AsmExit
  145. End Function
  146.  
  147. ;----
  148.  
  149. Function.l recvfrom{s.l, *buf.l, len_.l, flags.l, *addr_.l, *addrlen.l}
  150. ;                    d0    a0      d1      d2        a1         a2
  151.   SHARED SocketBase.l
  152.   MOVE.l a6,-(a7)
  153.   GetReg d6,SocketBase
  154.   MOVE.l d6,a6
  155.  
  156.   MOVE.l d1,a0
  157.   MOVE.l d2,d1
  158.   MOVE.l d3,d2
  159.   MOVE.l d4,a1
  160.   MOVE.l d5,a2
  161.  
  162.   JSR -72(a6)
  163.  
  164.   MOVE.l (a7)+,a6
  165.   AsmExit
  166. End Function
  167.  
  168. ;----
  169.  
  170. Function.l recv{s.l, *buf.l, len_.l, flags.l}
  171. ;                d0    a0      d1      d2
  172.   SHARED SocketBase.l
  173.   MOVE.l a6,-(a7)
  174.   GetReg d6,SocketBase
  175.   MOVE.l d6,a6
  176.  
  177.   MOVE.l d1,a0
  178.   MOVE.l d2,d1
  179.   MOVE.l d3,d2
  180.  
  181.   JSR -78(a6)
  182.  
  183.   MOVE.l (a7)+,a6
  184.   AsmExit
  185. End Function
  186.  
  187. ;----
  188.  
  189. Function.l shutdown{s.l, how.l}
  190. ;                    d0   d1
  191.   SHARED SocketBase.l
  192.   MOVE.l a6,-(a7)
  193.   GetReg d6,SocketBase
  194.   MOVE.l d6,a6
  195.  
  196.   JSR -84(a6)
  197.  
  198.   MOVE.l (a7)+,a6
  199.   AsmExit
  200. End Function
  201.  
  202. ;----
  203.  
  204. Function.l setsockopt{s.l, level.l, optname.l, *optval.l, optlen.l}
  205. ;                      d0     d1       d2         a0        d3
  206.   SHARED SocketBase.l
  207.   MOVE.l a6,-(a7)
  208.   GetReg d6,SocketBase
  209.   MOVE.l d6,a6
  210.  
  211.   MOVE.l d3,a0
  212.   MOVE.l d4,d3
  213.  
  214.   JSR -90(a6)
  215.  
  216.   MOVE.l (a7)+,a6
  217.   AsmExit
  218. End Function
  219.  
  220. ;----
  221.  
  222. Function.l getsockopt{s.l, level.l, optname.l, *optval.l, *optlen.l}
  223. ;                      d0     d1      d2          a0          a1
  224.   SHARED SocketBase.l
  225.   MOVE.l a6,-(a7)
  226.   GetReg d6,SocketBase
  227.   MOVE.l d6,a6
  228.  
  229.   MOVE.l d3,a0
  230.   MOVE.l d4,a1
  231.  
  232.   JSR -96(a6)
  233.  
  234.   MOVE.l (a7)+,a6
  235.   AsmExit
  236. End Function
  237.  
  238. ;----
  239.  
  240. Function.l getsockname{s.l, *name.l, *namelen.l}
  241. ;                       d0    a0        a1
  242.   SHARED SocketBase.l
  243.   MOVE.l a6,-(a7)
  244.   GetReg d6,SocketBase
  245.   MOVE.l d6,a6
  246.  
  247.   MOVE.l d1,a0
  248.   MOVE.l d2,a1
  249.  
  250.   JSR -102(a6)
  251.  
  252.   MOVE.l (a7)+,a6
  253.   AsmExit
  254. End Function
  255.  
  256. ;----
  257.  
  258. Function.l getpeername{s.l, *name.l, *namelen.l}
  259. ;                       d0    a0        a1
  260.   SHARED SocketBase.l
  261.   MOVE.l a6,-(a7)
  262.   GetReg d6,SocketBase
  263.   MOVE.l d6,a6
  264.  
  265.   MOVE.l d1,a0
  266.   MOVE.l d2,a1
  267.  
  268.   JSR -108(a6)
  269.  
  270.   MOVE.l (a7)+,a6
  271.   AsmExit
  272. End Function
  273.  
  274. ;----
  275.  
  276. Function.l IoctlSocket{s.l, req.l, *argp.l}
  277. ;                       d0    d1      a0
  278.   SHARED SocketBase.l
  279.   MOVE.l a6,-(a7)
  280.   GetReg d6,SocketBase
  281.   MOVE.l d6,a6
  282.  
  283.   MOVE.l d2,a0
  284.  
  285.   JSR -114(a6)
  286.  
  287.   MOVE.l (a7)+,a6
  288.   AsmExit
  289. End Function
  290.  
  291. ;----
  292.  
  293. Statement CloseSocket{s.l}
  294. ;                       d0
  295.   SHARED SocketBase.l
  296.   MOVE.l a6,-(a7)
  297.   GetReg d6,SocketBase
  298.   MOVE.l d6,a6
  299.                         ; s.l in d0
  300.   JSR -120(a6)
  301.  
  302.   MOVE.l (a7)+,a6
  303.   AsmExit
  304. End Statement
  305.  
  306. ;----
  307.  
  308. Function.l WaitSelect{nfds.l, *readfds.l, *writefds.l, *exceptfds.l, *timeout.l, *signal.l}
  309. ;                       d0        a0          a1            a2           a3         d1
  310.   SHARED SocketBase.l
  311.   MOVE.l a6,-(a7)
  312.   GetReg d6,SocketBase
  313.   MOVE.l d6,a6
  314.  
  315.   MOVE.l d1,a0
  316.   MOVE.l d2,a1
  317.   MOVE.l d3,a2
  318.   MOVE.l d4,a3
  319.   MOVE.l d5,d1
  320.  
  321.   JSR -126(a6)
  322.  
  323.   MOVE.l (a7)+,a6
  324.   AsmExit
  325. End Function
  326.  
  327. ;----
  328.  
  329. Function.l SetSocketSignals{intmask.l, iomask.l, urgentmask.l}
  330. ;                             d0          d1          d2
  331.   SHARED SocketBase.l
  332.   MOVE.l a6,-(a7)
  333.   GetReg d6,SocketBase
  334.   MOVE.l d6,a6
  335.  
  336.   JSR -132(a6)
  337.  
  338.   MOVE.l (a7)+,a6
  339.   AsmExit
  340. End Function
  341.  
  342. ;----
  343.  
  344. Function.l getdtablesize{}
  345. ;                       void
  346.   SHARED SocketBase.l
  347.   MOVE.l a6,-(a7)
  348.   GetReg d6,SocketBase
  349.   MOVE.l d6,a6
  350.  
  351.   JSR -138(a6)
  352.  
  353.   MOVE.l (a7)+,a6
  354.   AsmExit
  355. End Function
  356.  
  357. ;----
  358.  
  359. Function.l ObtainSocket{id.l, domain.l, type_.l, protocol.l}
  360. ;                        d0     d1        d2        d3
  361.   SHARED SocketBase.l
  362.   MOVE.l a6,-(a7)
  363.   GetReg d6,SocketBase
  364.   MOVE.l d6,a6
  365.  
  366.   JSR -144(a6)
  367.  
  368.   MOVE.l (a7)+,a6
  369.   AsmExit
  370. End Function
  371.  
  372. ;----
  373.  
  374. Function.l ReleaseSocket{s.l, id.l}
  375. ;                         d0   d1
  376.   SHARED SocketBase.l
  377.   MOVE.l a6,-(a7)
  378.   GetReg d6,SocketBase
  379.   MOVE.l d6,a6
  380.  
  381.   JSR -150(a6)
  382.  
  383.   MOVE.l (a7)+,a6
  384.   AsmExit
  385. End Function
  386.  
  387. ;----
  388.  
  389. Function.l ReleaseCopyOfSocket{s.l, id.l}
  390. ;                               d0    d1
  391.   SHARED SocketBase.l
  392.   MOVE.l a6,-(a7)
  393.   GetReg d6,SocketBase
  394.   MOVE.l d6,a6
  395.  
  396.   JSR -156(a6)
  397.  
  398.   MOVE.l (a7)+,a6
  399.   AsmExit
  400. End Function
  401.  
  402. ;----
  403.  
  404. Function.l Errno{}
  405. ;                void
  406.   SHARED SocketBase.l
  407.   MOVE.l a6,-(a7)
  408.   GetReg d6,SocketBase
  409.   MOVE.l d6,a6
  410.  
  411.   JSR -162(a6)
  412.  
  413.   MOVE.l (a7)+,a6
  414.   AsmExit
  415. End Function
  416.  
  417. ;----
  418.  
  419. Function.l SetErrnoPtr{*errnop.l, size.l}
  420. ;                         a0        d0
  421.   SHARED SocketBase.l
  422.   MOVE.l a6,-(a7)
  423.   GetReg d6,SocketBase
  424.   MOVE.l d6,a6
  425.  
  426.   MOVE.l d0,a0
  427.   MOVE.l d1,d0
  428.  
  429.   JSR -168(a6)
  430.  
  431.   MOVE.l (a7)+,a6
  432.   AsmExit
  433. End Function
  434.  
  435. ;----
  436.  
  437. Function.l Inet_NtoA{ip.l}
  438. ;                     d0
  439.   SHARED SocketBase.l
  440.   MOVE.l a6,-(a7)
  441.   GetReg d6,SocketBase
  442.   MOVE.l d6,a6
  443.  
  444.   JSR -174(a6)
  445.  
  446.   MOVE.l (a7)+,a6
  447.   AsmExit
  448. End Function
  449.  
  450. ;----
  451.  
  452. Function.l inet_addr{*cp.l}
  453. ;                      a0
  454.   SHARED SocketBase.l
  455.   MOVE.l a6,-(a7)
  456.   GetReg d6,SocketBase
  457.   MOVE.l d6,a6
  458.  
  459.   MOVE.l d0,a0
  460.  
  461.   JSR -180(a6)
  462.  
  463.   MOVE.l (a7)+,a6
  464.   AsmExit
  465. End Function
  466.  
  467. ;----
  468.  
  469. Function.l Inet_LnaOf{in.l}
  470. ;                      d0
  471.   SHARED SocketBase.l
  472.   MOVE.l a6,-(a7)
  473.   GetReg d6,SocketBase
  474.   MOVE.l d6,a6
  475.  
  476.   JSR -186(a6)
  477.  
  478.   MOVE.l (a7)+,a6
  479.   AsmExit
  480. End Function
  481.  
  482. ;----
  483.  
  484. Function.l Inet_NetOf{in.l}
  485. ;                      d0
  486.   SHARED SocketBase.l
  487.   MOVE.l a6,-(a7)
  488.   GetReg d6,SocketBase
  489.   MOVE.l d6,a6
  490.  
  491.   JSR -192(a6)
  492.  
  493.   MOVE.l (a7)+,a6
  494.   AsmExit
  495. End Function
  496.  
  497. ;----
  498.  
  499. Function.l Inet_MakeAddr{net.l, host.l}
  500. ;                         d0      d1
  501.   SHARED SocketBase.l
  502.   MOVE.l a6,-(a7)
  503.   GetReg d6,SocketBase
  504.   MOVE.l d6,a6
  505.  
  506.   JSR -198(a6)
  507.  
  508.   MOVE.l (a7)+,a6
  509.   AsmExit
  510. End Function
  511.  
  512. ;----
  513.  
  514. Function.l inet_network{*cp.l}
  515. ;                        a0
  516.   SHARED SocketBase.l
  517.   MOVE.l a6,-(a7)
  518.   GetReg d6,SocketBase
  519.   MOVE.l d6,a6
  520.  
  521.   MOVE.l d0,a0
  522.  
  523.   JSR -204(a6)
  524.  
  525.   MOVE.l (a7)+,a6
  526.   AsmExit
  527. End Function
  528.  
  529. ;----
  530.  
  531. Function.l gethostbyname{*name.l}
  532. ;                           a0
  533.   SHARED SocketBase.l
  534.   MOVE.l a6,-(a7)
  535.   GetReg d6,SocketBase
  536.   MOVE.l d6,a6
  537.  
  538.   MOVE.l d0,a0
  539.  
  540.   JSR -210(a6)
  541.  
  542.   MOVE.l (a7)+,a6
  543.   AsmExit
  544. End Function
  545.  
  546. ;----
  547.  
  548. Function.l gethostbyaddr{*addr_.l, len_.l, type_.l}
  549. ;                           a0        d0      d1
  550.   SHARED SocketBase.l
  551.   MOVE.l a6,-(a7)
  552.   GetReg d6,SocketBase
  553.   MOVE.l d6,a6
  554.  
  555.   MOVE.l d0,a0
  556.   MOVE.l d1,d0
  557.   MOVE.l d2,d1
  558.  
  559.   JSR -216(a6)
  560.  
  561.   MOVE.l (a7)+,a6
  562.   AsmExit
  563. End Function
  564.  
  565. ;----
  566.  
  567. Function.l getnetbyname{ *name.l}
  568. ;                          a0
  569.   SHARED SocketBase.l
  570.   MOVE.l a6,-(a7)
  571.   GetReg d6,SocketBase
  572.   MOVE.l d6,a6
  573.  
  574.   MOVE.l d0,a0
  575.  
  576.   JSR -222(a6)
  577.  
  578.   MOVE.l (a7)+,a6
  579.   AsmExit
  580. End Function
  581.  
  582. ;----
  583.  
  584. Function.l getnetbyaddr{net.l, type_.l}
  585. ;                         d0      d1
  586.   SHARED SocketBase.l
  587.   MOVE.l a6,-(a7)
  588.   GetReg d6,SocketBase
  589.   MOVE.l d6,a6
  590.  
  591.   JSR -228(a6)
  592.  
  593.   MOVE.l (a7)+,a6
  594.   AsmExit
  595. End Function
  596.  
  597. ;----
  598.  
  599. Function.l getservbyname{*name.l, *proto.l}
  600. ;                           a0        a1
  601.   SHARED SocketBase.l
  602.   MOVE.l a6,-(a7)
  603.   GetReg d6,SocketBase
  604.   MOVE.l d6,a6
  605.  
  606.   MOVE.l d0,a0
  607.   MOVE.l d1,a1
  608.  
  609.   JSR -234(a6)
  610.  
  611.   MOVE.l (a7)+,a6
  612.   AsmExit
  613. End Function
  614.  
  615. ;----
  616.  
  617. Function.l getservbyport{port.l, *proto.l}
  618. ;                           d0      a0
  619.   SHARED SocketBase.l
  620.   MOVE.l a6,-(a7)
  621.   GetReg d6,SocketBase
  622.   MOVE.l d6,a6
  623.  
  624.   MOVE.l d1,a0
  625.  
  626.   JSR -240(a6)
  627.  
  628.   MOVE.l (a7)+,a6
  629.   AsmExit
  630. End Function
  631.  
  632. ;----
  633.  
  634. Function.l getprotobyname{*name.l}
  635. ;                           a0
  636.   SHARED SocketBase.l
  637.   MOVE.l a6,-(a7)
  638.   GetReg d6,SocketBase
  639.   MOVE.l d6,a6
  640.  
  641.   MOVE.l d0,a0
  642.  
  643.   JSR -246(a6)
  644.  
  645.   MOVE.l (a7)+,a6
  646.   AsmExit
  647. End Function
  648.  
  649. ;----
  650.  
  651. Function.l getprotobynumber{id.l}
  652. ;                            d0
  653.   SHARED SocketBase.l
  654.   MOVE.l a6,-(a7)
  655.   GetReg d6,SocketBase
  656.   MOVE.l d6,a6
  657.  
  658.   JSR -252(a6)
  659.  
  660.   MOVE.l (a7)+,a6
  661.   AsmExit
  662. End Function
  663.  
  664. ;----
  665.  
  666. Function.l vsyslog{pri.l, *msg.l, args.l}
  667. ;                    d0     a0      a1
  668.   SHARED SocketBase.l
  669.   MOVE.l a6,-(a7)
  670.   GetReg d6,SocketBase
  671.   MOVE.l d6,a6
  672.  
  673.   MOVE.l d1,a0
  674.   MOVE.l d2,a1
  675.  
  676.   JSR -258(a6)
  677.  
  678.   MOVE.l (a7)+,a6
  679.   AsmExit
  680. End Function
  681.  
  682. ;----
  683.  
  684. Function.l Dup2Socket{olds.l, news.l}
  685. ;                       d0      d1
  686.   SHARED SocketBase.l
  687.   MOVE.l a6,-(a7)
  688.   GetReg d6,SocketBase
  689.   MOVE.l d6,a6
  690.  
  691.   JSR -264(a6)
  692.  
  693.   MOVE.l (a7)+,a6
  694.   AsmExit
  695. End Function
  696.  
  697. ;----
  698.  
  699. Function.l sendmsg{s.l, *msg.l, flags.l}
  700. ;                   d0    a0      d1
  701.   SHARED SocketBase.l
  702.   MOVE.l a6,-(a7)
  703.   GetReg d6,SocketBase
  704.   MOVE.l d6,a6
  705.  
  706.   MOVE.l d1,a0
  707.   MOVE.l d2,d1
  708.  
  709.   JSR -270(a6)
  710.  
  711.   MOVE.l (a7)+,a6
  712.   AsmExit
  713. End Function
  714.  
  715. ;----
  716.  
  717. Function.l recvmsg{s.l, *msg.l, flags.l}
  718. ;                   d0    a0      d1
  719.   SHARED SocketBase.l
  720.   MOVE.l a6,-(a7)
  721.   GetReg d6,SocketBase
  722.   MOVE.l d6,a6
  723.  
  724.   MOVE.l d1,a0
  725.   MOVE.l d2,d1
  726.  
  727.   JSR -276(a6)
  728.  
  729.   MOVE.l (a7)+,a6
  730.   AsmExit
  731. End Function
  732.  
  733. ;----
  734.  
  735. Function.l gethostname{*name.l, namelen.l}
  736. ;                         a0        d0
  737.   SHARED SocketBase.l
  738.   MOVE.l a6,-(a7)
  739.   GetReg d6,SocketBase
  740.   MOVE.l d6,a6
  741.  
  742.   MOVE.l d0,a0
  743.   MOVE.l d1,d0
  744.  
  745.   JSR -282(a6)
  746.  
  747.   MOVE.l (a7)+,a6
  748.   AsmExit
  749. End Function
  750.  
  751. ;----
  752.  
  753. Function.l gethostid{}
  754. ;                   void
  755.   SHARED SocketBase.l
  756.   MOVE.l a6,-(a7)
  757.   GetReg d6,SocketBase
  758.   MOVE.l d6,a6
  759.  
  760.   JSR -288(a6)
  761.  
  762.   MOVE.l (a7)+,a6
  763.   AsmExit
  764. End Function
  765.  
  766. ;----
  767.  
  768. Function.l SocketBaseTagList{*tags.l}
  769. ;                               a0
  770.   SHARED SocketBase.l
  771.   MOVE.l a6,-(a7)
  772.   GetReg d6,SocketBase
  773.   MOVE.l d6,a6
  774.  
  775.   MOVE.l d0,a0
  776.  
  777.   JSR -294(a6)
  778.  
  779.   MOVE.l (a7)+,a6
  780.   AsmExit
  781. End Function
  782.  
  783. ;----
  784.  
  785. Function.l GetSocketEvents{*eventsp.l}
  786. ;                               a0
  787.   SHARED SocketBase.l
  788.   MOVE.l a6,-(a7)
  789.   GetReg d6,SocketBase
  790.   MOVE.l d6,a6
  791.  
  792.   MOVE.l d0,a0
  793.  
  794.   JSR -300(a6)
  795.  
  796.   MOVE.l (a7)+,a6
  797.   AsmExit
  798. End Function
  799.